home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok81 / m2 / talkdemo / txt / talkgadgets.mod < prev    next >
Text File  |  1993-11-04  |  18KB  |  742 lines

  1. IMPLEMENTATION MODULE TalkGadgets;
  2. (*$ LargeVars:=FALSE StackParms:=FALSE Volatile:=FALSE *)
  3.  
  4. FROM SYSTEM    IMPORT    ADR,ADDRESS,CAST,TAG;
  5. FROM UtilityD    IMPORT    tagEnd;
  6. FROM Requester    IMPORT    OKRequest;
  7. IMPORT    TB:TalkBase,
  8.     A:Arts,
  9.     ID:IntuitionD,
  10.     IL:IntuitionL,
  11.     GD:GadToolsD,
  12.     GL:GadToolsL,
  13.     N:Narrator,
  14.     TN:TalkNarrator;
  15.  
  16. TYPE
  17.   MyNewGadget=RECORD
  18.     type:LONGCARD;
  19.     ng:GD.NewGadget;
  20.     tags:ADDRESS;
  21.   END;
  22.  
  23.   MyTag18=ARRAY[0..16] OF ADDRESS;
  24.   MyTag6=ARRAY[0..6] OF ADDRESS;
  25.   MyTag4=ARRAY[0..4] OF ADDRESS;
  26.   MyTag2=ARRAY[0..2] OF ADDRESS;
  27.   MyTag0=ARRAY[0..0] OF ADDRESS;
  28.  
  29.   GArr=ARRAY Gadgets OF MyNewGadget;
  30.  
  31.   Str127=ARRAY[0..127] OF CHAR;
  32.   Str255=ARRAY[0..255] OF CHAR;
  33.   Str127Ptr=POINTER TO Str127;
  34.   Str255Ptr=POINTER TO Str255;
  35.  
  36.  
  37. VAR
  38.  
  39. (* GADGETS ****************************************** *)
  40. TYPE
  41.   AA4=ARRAY[0..3] OF ADDRESS;
  42.   AA3=ARRAY[0..2] OF ADDRESS;
  43.   AA12=ARRAY[0..11] OF ADDRESS;
  44. CONST
  45.   ld4="%5ld";
  46.   modeLabs=AA4{ADR("Natural"),ADR("Robotic"),ADR("Manual"),NIL};
  47.   sexLabs=AA3{ADR("Male"),ADR("Female"),NIL};
  48.   centLabs=AA12{ (* noch mal als Konstante, damit reentrant! *)
  49.       ADR("IY"),
  50.       ADR("IH"),
  51.       ADR("EH"),
  52.       ADR("AE"),
  53.       ADR("AA"),
  54.     ADR("AH"),
  55.     ADR("AO"),
  56.     ADR("OW"),
  57.     ADR("UH"),
  58.     ADR("ER"),
  59.     ADR("UW"),
  60.     NIL};
  61.  
  62. VAR
  63.   tagBuff:ARRAY[0..5] OF ADDRESS;
  64.   glist,gad:ID.GadgetPtr;
  65.   (*$ RangeChk:=FALSE *)
  66.   ngs:=GArr{
  67.     (* rate *)
  68.     MyNewGadget{
  69.       type:GD.sliderKind,
  70.       ng:GD.NewGadget{
  71.         leftEdge:150,
  72.         topEdge:10,
  73.         width:150,
  74.         height:15,
  75.     gadgetText:ADR("rate:     "),
  76.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  77.         },
  78.       tags:ADR(MyTag18{
  79.           ORD(GD.gtslMin),    N.minRate,
  80.           ORD(GD.gtslMax),    N.maxRate,
  81.           ORD(GD.gtslLevel),    N.defRate,
  82.     ORD(ID.gaRelVerify),    ORD(TRUE),
  83.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  84.     ORD(GD.gtslLevelFormat),ADR(ld4),
  85.     ORD(ID.gaRelVerify),    ORD(TRUE),
  86.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  87.     tagEnd})
  88.     },
  89.  
  90.     (* pitch *)
  91.     MyNewGadget{
  92.       type:GD.sliderKind,
  93.       ng:GD.NewGadget{
  94.         leftEdge:150,
  95.         topEdge:25,
  96.         width:150,
  97.         height:15,
  98.     gadgetText:ADR("pitch:     "),
  99.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  100.         },
  101.       tags:ADR(MyTag18{
  102.           ORD(GD.gtslMin),    N.minPitch,
  103.           ORD(GD.gtslMax),    N.maxPitch,
  104.           ORD(GD.gtslLevel),    N.defPitch,
  105.     ORD(ID.gaRelVerify),    ORD(TRUE),
  106.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  107.     ORD(GD.gtslLevelFormat),ADR(ld4),
  108.     ORD(ID.gaRelVerify),    ORD(TRUE),
  109.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  110.           tagEnd})
  111.     },
  112.  
  113.     (* volume *)
  114.     MyNewGadget{
  115.       type:GD.sliderKind,
  116.       ng:GD.NewGadget{
  117.         leftEdge:150,
  118.         topEdge:40,
  119.         width:150,
  120.         height:15,
  121.     gadgetText:ADR("volume:     "),
  122.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  123.         },
  124.       tags:ADR(MyTag18{
  125.           ORD(GD.gtslMin),    N.minVol,
  126.           ORD(GD.gtslMax),    N.maxVol,
  127.           ORD(GD.gtslLevel),    N.defVol,
  128.     ORD(ID.gaRelVerify),    ORD(TRUE),
  129.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  130.     ORD(GD.gtslLevelFormat),ADR(ld4),
  131.     ORD(ID.gaRelVerify),    ORD(TRUE),
  132.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  133.           tagEnd})
  134.     },
  135.  
  136.     (* sampFreq *)
  137.     MyNewGadget{
  138.       type:GD.sliderKind,
  139.       ng:GD.NewGadget{
  140.         leftEdge:150,
  141.         topEdge:55,
  142.         width:150,
  143.         height:15,
  144.     gadgetText:ADR("sampFreq:     "),
  145.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  146.         },
  147.       tags:ADR(MyTag18{
  148.           ORD(GD.gtslMin),    N.minFreq,
  149.           ORD(GD.gtslMax),    N.maxFreq,
  150.           ORD(GD.gtslLevel),    N.defFreq,
  151.     ORD(ID.gaRelVerify),    ORD(TRUE),
  152.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  153.     ORD(GD.gtslLevelFormat),ADR(ld4),
  154.     ORD(ID.gaRelVerify),    ORD(TRUE),
  155.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  156.           tagEnd})
  157.     },
  158.  
  159.     (* f0Enth *)
  160.     MyNewGadget{
  161.       type:GD.sliderKind,
  162.       ng:GD.NewGadget{
  163.         leftEdge:450,
  164.         topEdge:10,
  165.         width:150,
  166.         height:15,
  167.     gadgetText:ADR("f0Enth:     "),
  168.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  169.         },
  170.       tags:ADR(MyTag18{
  171.           ORD(GD.gtslMin),    0,
  172.           ORD(GD.gtslMax),    255,
  173.           ORD(GD.gtslLevel),    N.defF0Enthus,
  174.     ORD(ID.gaRelVerify),    ORD(TRUE),
  175.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  176.     ORD(GD.gtslLevelFormat),ADR(ld4),
  177.     ORD(ID.gaRelVerify),    ORD(TRUE),
  178.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  179.           tagEnd})
  180.     },
  181.  
  182.     (* f0Perturb *)
  183.     MyNewGadget{
  184.       type:GD.sliderKind,
  185.       ng:GD.NewGadget{
  186.         leftEdge:450,
  187.         topEdge:25,
  188.         width:150,
  189.         height:15,
  190.     gadgetText:ADR("f0Perturb:     "),
  191.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  192.         },
  193.       tags:ADR(MyTag18{
  194.           ORD(GD.gtslMin),    0,
  195.           ORD(GD.gtslMax),    255,
  196.           ORD(GD.gtslLevel),    N.defF0Pert,
  197.     ORD(ID.gaRelVerify),    ORD(TRUE),
  198.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  199.     ORD(GD.gtslLevelFormat),ADR(ld4),
  200.     ORD(ID.gaRelVerify),    ORD(TRUE),
  201.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  202.           tagEnd})
  203.     },
  204.  
  205.     (* f1Adj *)
  206.     MyNewGadget{
  207.       type:GD.sliderKind,
  208.       ng:GD.NewGadget{
  209.         leftEdge:450,
  210.         topEdge:40,
  211.         width:150,
  212.         height:15,
  213.     gadgetText:ADR("f1Adj:     "),
  214.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  215.         },
  216.       tags:ADR(MyTag18{
  217.           ORD(GD.gtslMin),    -128,
  218.           ORD(GD.gtslMax),    104, (* bei mehr ist nichts mehr zu hören, 120 kommt nie zurück! *)
  219.           ORD(GD.gtslLevel),    0,
  220.     ORD(ID.gaRelVerify),    ORD(TRUE),
  221.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  222.     ORD(GD.gtslLevelFormat),ADR(ld4),
  223.     ORD(ID.gaRelVerify),    ORD(TRUE),
  224.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  225.           tagEnd})
  226.     },
  227.  
  228.     (* f2Adj *)
  229.     MyNewGadget{
  230.       type:GD.sliderKind,
  231.       ng:GD.NewGadget{
  232.         leftEdge:450,
  233.         topEdge:55,
  234.         width:150,
  235.         height:15,
  236.     gadgetText:ADR("f2Adj:     "),
  237.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  238.         },
  239.       tags:ADR(MyTag18{
  240.           ORD(GD.gtslMin),    -128,
  241.           ORD(GD.gtslMax),    127,
  242.           ORD(GD.gtslLevel),    0,
  243.     ORD(ID.gaRelVerify),    ORD(TRUE),
  244.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  245.     ORD(GD.gtslLevelFormat),ADR(ld4),
  246.     ORD(ID.gaRelVerify),    ORD(TRUE),
  247.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  248.           tagEnd})
  249.     },
  250.  
  251.     (* f3Adj *)
  252.     MyNewGadget{
  253.       type:GD.sliderKind,
  254.       ng:GD.NewGadget{
  255.         leftEdge:450,
  256.         topEdge:70,
  257.         width:150,
  258.         height:15,
  259.     gadgetText:ADR("f3Adj:     "),
  260.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  261.         },
  262.       tags:ADR(MyTag18{
  263.           ORD(GD.gtslMin),    -128,
  264.           ORD(GD.gtslMax),    127,
  265.           ORD(GD.gtslLevel),    0,
  266.     ORD(ID.gaRelVerify),    ORD(TRUE),
  267.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  268.     ORD(GD.gtslLevelFormat),ADR(ld4),
  269.     ORD(ID.gaRelVerify),    ORD(TRUE),
  270.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  271.           tagEnd})
  272.     },
  273.     (* a1Adj *)
  274.     MyNewGadget{
  275.       type:GD.sliderKind,
  276.       ng:GD.NewGadget{
  277.         leftEdge:450,
  278.         topEdge:85,
  279.         width:150,
  280.         height:15,
  281.     gadgetText:ADR("a1Adj:     "),
  282.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  283.         },
  284.       tags:ADR(MyTag18{
  285.           ORD(GD.gtslMin),    -128,
  286.           ORD(GD.gtslMax),    127,
  287.           ORD(GD.gtslLevel),    0,
  288.     ORD(ID.gaRelVerify),    ORD(TRUE),
  289.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  290.     ORD(GD.gtslLevelFormat),ADR(ld4),
  291.     ORD(ID.gaRelVerify),    ORD(TRUE),
  292.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  293.           tagEnd})
  294.     },
  295.  
  296.     (* a2Adj *)
  297.     MyNewGadget{
  298.       type:GD.sliderKind,
  299.       ng:GD.NewGadget{
  300.         leftEdge:450,
  301.         topEdge:100,
  302.         width:150,
  303.         height:15,
  304.     gadgetText:ADR("a2Adj:     "),
  305.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  306.         },
  307.       tags:ADR(MyTag18{
  308.           ORD(GD.gtslMin),    -128,
  309.           ORD(GD.gtslMax),    127,
  310.           ORD(GD.gtslLevel),    0,
  311.     ORD(ID.gaRelVerify),    ORD(TRUE),
  312.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  313.     ORD(GD.gtslLevelFormat),ADR(ld4),
  314.     ORD(ID.gaRelVerify),    ORD(TRUE),
  315.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  316.           tagEnd})
  317.     },
  318.  
  319.     (* a3Adj *)
  320.     MyNewGadget{
  321.       type:GD.sliderKind,
  322.       ng:GD.NewGadget{
  323.         leftEdge:450,
  324.         topEdge:115,
  325.         width:150,
  326.         height:15,
  327.     gadgetText:ADR("a3Adj:     "),
  328.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  329.         },
  330.       tags:ADR(MyTag18{
  331.           ORD(GD.gtslMin),    -128,
  332.           ORD(GD.gtslMax),    127,
  333.           ORD(GD.gtslLevel),    0,
  334.     ORD(ID.gaRelVerify),    ORD(TRUE),
  335.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  336.     ORD(GD.gtslLevelFormat),ADR(ld4),
  337.     ORD(ID.gaRelVerify),    ORD(TRUE),
  338.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  339.           tagEnd})
  340.     },
  341.  
  342.     (* articulate *)
  343.     MyNewGadget{
  344.       type:GD.sliderKind,
  345.       ng:GD.NewGadget{
  346.         leftEdge:150,
  347.         topEdge:70,
  348.         width:150,
  349.         height:15,
  350.     gadgetText:ADR("articulate:     "),
  351.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  352.         },
  353.       tags:ADR(MyTag18{
  354.           ORD(GD.gtslMin),    0,
  355.           ORD(GD.gtslMax),    255,
  356.           ORD(GD.gtslLevel),    N.defArtic,
  357.     ORD(ID.gaRelVerify),    ORD(TRUE),
  358.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  359.     ORD(GD.gtslLevelFormat),ADR(ld4),
  360.     ORD(ID.gaRelVerify),    ORD(TRUE),
  361.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  362.     tagEnd})
  363.     },
  364.  
  365.     (* avBias *)
  366.     MyNewGadget{
  367.       type:GD.sliderKind,
  368.       ng:GD.NewGadget{
  369.         leftEdge:150,
  370.         topEdge:85,
  371.         width:150,
  372.         height:15,
  373.     gadgetText:ADR("avBias:     "),
  374.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  375.         },
  376.       tags:ADR(MyTag18{
  377.           ORD(GD.gtslMin),    -128,
  378.           ORD(GD.gtslMax),    127,
  379.           ORD(GD.gtslLevel),    0,
  380.     ORD(ID.gaRelVerify),    ORD(TRUE),
  381.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  382.     ORD(GD.gtslLevelFormat),ADR(ld4),
  383.     ORD(ID.gaRelVerify),    ORD(TRUE),
  384.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  385.     tagEnd})
  386.     },
  387.  
  388.     (* afBias *)
  389.     MyNewGadget{
  390.       type:GD.sliderKind,
  391.       ng:GD.NewGadget{
  392.         leftEdge:150,
  393.         topEdge:100,
  394.         width:150,
  395.         height:15,
  396.     gadgetText:ADR("afBias:     "),
  397.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  398.         },
  399.       tags:ADR(MyTag18{
  400.           ORD(GD.gtslMin),    -128,
  401.           ORD(GD.gtslMax),    127,
  402.           ORD(GD.gtslLevel),    0,
  403.     ORD(ID.gaRelVerify),    ORD(TRUE),
  404.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  405.     ORD(GD.gtslLevelFormat),ADR(ld4),
  406.     ORD(ID.gaRelVerify),    ORD(TRUE),
  407.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  408.     tagEnd})
  409.     },
  410.  
  411.     (* priority *)
  412.     MyNewGadget{
  413.       type:GD.sliderKind,
  414.       ng:GD.NewGadget{
  415.         leftEdge:150,
  416.         topEdge:115,
  417.         width:150,
  418.         height:15,
  419.     gadgetText:ADR("priority:     "),
  420.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  421.         },
  422.       tags:ADR(MyTag18{
  423.           ORD(GD.gtslMin),    -128,
  424.           ORD(GD.gtslMax),    127,
  425.           ORD(GD.gtslLevel),    N.defPriority,
  426.     ORD(ID.gaRelVerify),    ORD(TRUE),
  427.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  428.     ORD(GD.gtslLevelFormat),ADR(ld4),
  429.     ORD(ID.gaRelVerify),    ORD(TRUE),
  430.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  431.     tagEnd})
  432.     },
  433.  
  434.     (* centralize *)
  435.     MyNewGadget{
  436.       type:GD.sliderKind,
  437.       ng:GD.NewGadget{
  438.         leftEdge:150,
  439.         topEdge:130,
  440.         width:150,
  441.         height:15,
  442.     gadgetText:ADR("centralize:     "),
  443.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  444.         },
  445.       tags:ADR(MyTag18{
  446.           ORD(GD.gtslMin),    N.minCent,
  447.           ORD(GD.gtslMax),    N.maxCent,
  448.           ORD(GD.gtslLevel),    N.defCentral,
  449.     ORD(ID.gaRelVerify),    ORD(TRUE),
  450.     ORD(GD.gtslMaxLevelLen),5, (* Length of Text *)
  451.     ORD(GD.gtslLevelFormat),ADR(ld4),
  452.     ORD(ID.gaRelVerify),    ORD(TRUE),
  453.     ORD(ID.pgaFreedom),    ORD(ID.lorientHoriz),
  454.     tagEnd})
  455.     },
  456.  
  457.  
  458.     (* mode *)
  459.     MyNewGadget{
  460.       type:GD.mxKind,
  461.       ng:GD.NewGadget{
  462.         leftEdge:80,
  463.         topEdge:155,
  464.         width:80,
  465.         height:15,
  466.     gadgetText:ADR("mode:"),
  467.     flags:GD.NewGadgetFlagSet{GD.placetextLeft}
  468.         },
  469.       tags:ADR(MyTag2{
  470.           ORD(GD.gtmxLabels),    ADR(modeLabs),
  471.     tagEnd})
  472.     },
  473.  
  474.     (* sex *)
  475.     MyNewGadget{
  476.       type:GD.mxKind,
  477.       ng:GD.NewGadget{
  478.         leftEdge:100,
  479.         topEdge:155,
  480.         width:80,
  481.         height:15,
  482.     gadgetText:ADR("sex:"),
  483.     flags:GD.NewGadgetFlagSet{GD.placetextRight}
  484.         },
  485.       tags:ADR(MyTag2{
  486.           ORD(GD.gtmxLabels),    ADR(sexLabs),
  487.     tagEnd})
  488.     },
  489.  
  490.     (* centphon *)
  491.     MyNewGadget{
  492.       type:GD.cycleKind,
  493.       ng:GD.NewGadget{
  494.         leftEdge:310,
  495.         topEdge:130,
  496.         width:80,
  497.         height:15,
  498.     gadgetText:ADR("centphon"),
  499.     flags:GD.NewGadgetFlagSet{GD.placetextRight}
  500.         },
  501.       tags:ADR(MyTag2{
  502.           ORD(GD.gtcyLabels),    ADR(centLabs), (* TB.centLabs verhindert reentrancy! *)
  503.     tagEnd})
  504.     },
  505.  
  506.     (* text *)
  507.     MyNewGadget{
  508.       type:GD.stringKind,
  509.       ng:GD.NewGadget{
  510.         leftEdge:0,
  511.         topEdge:200,
  512.         width:640,
  513.         height:15,
  514.     gadgetText:ADR("Text"),
  515.     flags:GD.NewGadgetFlagSet{GD.placetextAbove}
  516.         },
  517.       tags:ADR(MyTag6{
  518.           ORD(ID.gaLabelImage)+1,    ORD(FALSE), (* no TabCycle! *)
  519.           ORD(GD.gtstMaxChars),    SIZE(TB.textBuff),
  520.           ORD(GD.gtstString),    ADR("Hello, welcome to Talker - Version 1.1. - Enjoy it!"),
  521.     tagEnd})
  522.     },
  523.  
  524.     (* phonemes *)
  525.     MyNewGadget{
  526.       type:GD.stringKind,
  527.       ng:GD.NewGadget{
  528.         leftEdge:0,
  529.         topEdge:230,
  530.         width:640,
  531.         height:15,
  532.     gadgetText:ADR("Phonemes"),
  533.     flags:GD.NewGadgetFlagSet{GD.placetextAbove}
  534.         },
  535.       tags:ADR(MyTag4{
  536.           ORD(ID.gaLabelImage)+1,    ORD(FALSE), (* ID.gaTabCycle in V37 *)
  537.           ORD(GD.gtstMaxChars),    SIZE(TB.phonBuff),
  538.     tagEnd})
  539.     },
  540.  
  541.     (* talk *)
  542.     MyNewGadget{
  543.       type:GD.buttonKind,
  544.       ng:GD.NewGadget{
  545.         leftEdge:230,
  546.         topEdge:155,
  547.         width:80,
  548.         height:15,
  549.     gadgetText:ADR(">>TALK<<"),
  550.     flags:GD.NewGadgetFlagSet{(*GD.placetextBelow,*)GD.ngHighlabel}
  551.         },
  552.       tags:ADR(MyTag0{tagEnd})
  553.     },
  554.  
  555.     (* abort *)
  556.     MyNewGadget{
  557.       type:GD.buttonKind,
  558.       ng:GD.NewGadget{
  559.         leftEdge:320,
  560.         topEdge:155,
  561.         width:60,
  562.         height:15,
  563.     gadgetText:ADR("Abort"),
  564.     flags:GD.NewGadgetFlagSet{GD.placetextIn,GD.ngHighlabel}
  565.         },
  566.       tags:ADR(MyTag0{tagEnd})
  567.     },
  568.  
  569.   };
  570.   (*$ POP RangeChk *)
  571.  
  572. PROCEDURE MakeGadgets():BOOLEAN;
  573. VAR
  574.   ga:Gadgets;
  575. BEGIN
  576.   gad:=glist;
  577.   FOR ga:=MIN(Gadgets) TO MAX(Gadgets) DO
  578.     WITH ngs[ga] DO
  579.       ng.textAttr:=TB.myTextAttr;
  580.       ng.visualInfo:=TB.vi;
  581.       ng.gadgetID:=ORD(ga);
  582.       gad:=GL.CreateGadgetA(type,gad^,ng,tags);
  583.       gadgets[ga]:=gad;
  584.       IF gad=NIL THEN RETURN FALSE END;
  585.     END;
  586.   END;
  587.   IF IL.AddGList(TB.myWindow,glist,-1,-1,NIL)=0 THEN END;
  588.   IL.RefreshGList(glist,TB.myWindow,NIL,-1);
  589.   GL.GTRefreshWindow(TB.myWindow,NIL);
  590.   RETURN TRUE
  591. END MakeGadgets;
  592.  
  593. PROCEDURE InitGadgets();
  594. BEGIN
  595.   glist:=NIL;
  596.   IF GL.CreateContext(glist)=NIL THEN
  597.     HALT
  598.   END;
  599.   IF ~MakeGadgets() THEN
  600.     TB.SetBusy(TRUE);
  601.     OKRequest("Kann Gadgets nicht erzeugen!");
  602.     TB.SetBusy(FALSE);
  603.   END;
  604.   GL.DrawBevelBoxA(TB.myRp,TB.midX-100,TB.midY-20,200,40,TAG(tagBuff,
  605.     GD.gtVisualInfo,    TB.vi,
  606.     GD.gtbbRecessed,    TRUE,
  607.     tagEnd));
  608. END InitGadgets;
  609.  
  610.  
  611. (* VAR-Parameter geht nicht, weil sonst für TAG zu wenig Register! *)
  612. PROCEDURE SetNarr(n:TB.NarrData);
  613. BEGIN
  614.   (* 1.: Werte kopieren *)
  615.   TB.myNarr:=n;
  616.   (* 2. Gadgets update *)
  617.   (*$ Volatile:=TRUE *)
  618.   GL.GTSetGadgetAttrsA(gadgets[rate],TB.myWindow,NIL,TAG(tagBuff,
  619.     GD.gtslLevel,    n.rate,
  620.     tagEnd));
  621.   GL.GTSetGadgetAttrsA(gadgets[pitch],TB.myWindow,NIL,TAG(tagBuff,
  622.     GD.gtslLevel,    n.pitch,
  623.     tagEnd));
  624.   GL.GTSetGadgetAttrsA(gadgets[volume],TB.myWindow,NIL,TAG(tagBuff,
  625.     GD.gtslLevel,    n.volume,
  626.     tagEnd));
  627.   GL.GTSetGadgetAttrsA(gadgets[sampFreq],TB.myWindow,NIL,TAG(tagBuff,
  628.     GD.gtslLevel,    n.sampFreq,
  629.     tagEnd));
  630.   GL.GTSetGadgetAttrsA(gadgets[f0Enth],TB.myWindow,NIL,TAG(tagBuff,
  631.     GD.gtslLevel,    n.f0Enthusiasm,
  632.     tagEnd));
  633.   GL.GTSetGadgetAttrsA(gadgets[f0Perturb],TB.myWindow,NIL,TAG(tagBuff,
  634.     GD.gtslLevel,    n.f0Perturb,
  635.     tagEnd));
  636.   GL.GTSetGadgetAttrsA(gadgets[f1Adj],TB.myWindow,NIL,TAG(tagBuff,
  637.     GD.gtslLevel,    n.f1Adj,
  638.     tagEnd));
  639.   GL.GTSetGadgetAttrsA(gadgets[f2Adj],TB.myWindow,NIL,TAG(tagBuff,
  640.     GD.gtslLevel,    n.f2Adj,
  641.     tagEnd));
  642.   GL.GTSetGadgetAttrsA(gadgets[f3Adj],TB.myWindow,NIL,TAG(tagBuff,
  643.     GD.gtslLevel,    n.f3Adj,
  644.     tagEnd));
  645.   GL.GTSetGadgetAttrsA(gadgets[a1Adj],TB.myWindow,NIL,TAG(tagBuff,
  646.     GD.gtslLevel,    n.a1Adj,
  647.     tagEnd));
  648.   GL.GTSetGadgetAttrsA(gadgets[a2Adj],TB.myWindow,NIL,TAG(tagBuff,
  649.     GD.gtslLevel,    n.a2Adj,
  650.     tagEnd));
  651.   GL.GTSetGadgetAttrsA(gadgets[a3Adj],TB.myWindow,NIL,TAG(tagBuff,
  652.     GD.gtslLevel,    n.a3Adj,
  653.     tagEnd));
  654.   GL.GTSetGadgetAttrsA(gadgets[articulate],TB.myWindow,NIL,TAG(tagBuff,
  655.     GD.gtslLevel,    n.articulate,
  656.     tagEnd));
  657.   GL.GTSetGadgetAttrsA(gadgets[avBias],TB.myWindow,NIL,TAG(tagBuff,
  658.     GD.gtslLevel,    n.avBias,
  659.     tagEnd));
  660.   GL.GTSetGadgetAttrsA(gadgets[afBias],TB.myWindow,NIL,TAG(tagBuff,
  661.     GD.gtslLevel,    n.afBias,
  662.     tagEnd));
  663.   GL.GTSetGadgetAttrsA(gadgets[priority],TB.myWindow,NIL,TAG(tagBuff,
  664.     GD.gtslLevel,    n.priority,
  665.     tagEnd));
  666.   GL.GTSetGadgetAttrsA(gadgets[centralize],TB.myWindow,NIL,TAG(tagBuff,
  667.     GD.gtslLevel,    n.centralize,
  668.     tagEnd));
  669.   GL.GTSetGadgetAttrsA(gadgets[mode],TB.myWindow,NIL,TAG(tagBuff,
  670.     GD.gtmxActive,    n.mode,
  671.     tagEnd));
  672.   GL.GTSetGadgetAttrsA(gadgets[sex],TB.myWindow,NIL,TAG(tagBuff,
  673.     GD.gtmxActive,    n.sex,
  674.     tagEnd));
  675.   GL.GTSetGadgetAttrsA(gadgets[centphon],TB.myWindow,NIL,TAG(tagBuff,
  676.     GD.gtcyActive,    n.centphon,
  677.     ID.gaDisabled,    n.centralize=0,
  678.     tagEnd));
  679.   (*$ POP Volatile *)
  680. END SetNarr;
  681.  
  682.  
  683. PROCEDURE UpdatePhonemes;
  684. (* Sorry, aber das verhindert reentrancy!
  685. CONST
  686.   phonBuffAdr=ADR(TB.phonBuff); (* Dies geht erst ab V4.1!!!! *)
  687. *)
  688. VAR
  689.   phonBuffAdr:ADDRESS; (* für TAG zu wenig Register! *)
  690. BEGIN
  691.   phonBuffAdr:=ADR(TB.phonBuff);
  692.   GL.GTSetGadgetAttrsA(gadgets[phonemes],TB.myWindow,NIL,TAG(tagBuff,
  693.     GD.gtstString,    phonBuffAdr,
  694.     tagEnd));
  695. END UpdatePhonemes;
  696.  
  697. PROCEDURE SetCentPhone(nr:TB.CentrPhons);
  698. VAR
  699.   c0:BOOLEAN;
  700. BEGIN
  701.   TB.myNarr.centphon:=nr;
  702.   c0:=TB.myNarr.centralize=0;
  703.   GL.GTSetGadgetAttrsA(gadgets[centphon],TB.myWindow,NIL,TAG(tagBuff,
  704.     GD.gtcyActive,    nr,
  705.     ID.gaDisabled,    c0,
  706.     tagEnd));
  707. END SetCentPhone;
  708.  
  709. PROCEDURE Disable(g:Gadgets);
  710. BEGIN
  711.   IF ~(ID.gadgDisabled IN gadgets[g]^.flags) THEN
  712.     GL.GTSetGadgetAttrsA(gadgets[g],TB.myWindow,NIL,TAG(tagBuff,
  713.     ID.gaDisabled,    TRUE,
  714.     tagEnd));
  715.   END;
  716. END Disable;
  717.  
  718. PROCEDURE Enable(g:Gadgets);
  719. BEGIN
  720.   IF (ID.gadgDisabled IN gadgets[g]^.flags) THEN
  721.     GL.GTSetGadgetAttrsA(gadgets[g],TB.myWindow,NIL,TAG(tagBuff,
  722.     ID.gaDisabled,    FALSE,
  723.     tagEnd));
  724.   END;
  725. END Enable;
  726.  
  727.  
  728. PROCEDURE DisposeGadgets();
  729. BEGIN
  730.   IF glist#NIL THEN
  731.     GL.FreeGadgets(glist);
  732.     glist:=NIL
  733.   END;
  734. END DisposeGadgets;
  735.  
  736. BEGIN
  737.   A.Assert(A.kickVersion>=37,ADR("Needs kick>=37"));
  738.   InitGadgets;
  739. CLOSE
  740.   DisposeGadgets;
  741. END TalkGadgets.mod
  742.